package com.syl.practice.init.demo04;


public class Test {
    static {
        // 初始化块可以对在它之后定义的变量赋值，但不能访问（如打印）
        // 本质：静态变量的声明与初始化是两个不同的操作; 静态变量的声明在编译时已经明确了内存的位置。
        // 即变量i在之前就已经声明了，所以这里才能进行赋值操作！！
        i = 0;
//        System.out.print(i);  // 这句编译器会提示“非法向前引用”
    }

    static int i;

    static int j = 1;

    static{
        j = 2;
    }

    public static void main(String[] args){
        System.out.println(Test.i);  //0
        System.out.println(Test.j); //2
    }
}
